home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
asmutil
/
hdsource.zip
/
HDMSG.ASM
< prev
next >
Wrap
Assembly Source File
|
1986-02-24
|
9KB
|
238 lines
PAGE 64,132 ;PAGE WIDTH,LENGTH
.SALL
TITLE PC/AT DIAGNOSTIC - MESSAGE PRINT ROUTINE
; **********************************************************************
; * *
; * MODULE NAME HDMSG *
; * AUTHOR JIM BRACKING *
; * *
; * DECSRIPTION THIS PROGRAM PERFORMS THE FOLLOWING *
; * FUNCTIONS: *
; * *
; * 1. DECODE THE ERROR MESSAGE AND DISPLAY IT *
; * IF PRINT=ON THEN PRINT THE MESSAGE *
; * *
; **********************************************************************
;
; **********************************************************************
; * EXTERNAL PROGRAM REFERENCES *
; **********************************************************************
EXTRN SCRMGR:NEAR
; **********************************************************************
; * EXTERNAL DATA REFERENCES *
; **********************************************************************
INCLUDE HDDATA.ASM
; **********************************************************************
; * EXTERNAL SUBROUTINE REFERENCES *
; **********************************************************************
EXTRN SCRMGR:NEAR,CONV_ASCII:NEAR
; **********************************************************************
; * PUBLIC DECLARES *
; **********************************************************************
PUBLIC HDMSG
PUBLIC D_ERROR
PUBLIC PRT_MSG,LOGERR
; **********************************************************************
; * MACROS *
; **********************************************************************
;
IF1
INCLUDE HD.MAC
INCLUDE \SCRMGR\SCRNWORK.MAC
ENDIF
; **********************************************************************
; * *
; * BEGIN *
; * *
; **********************************************************************
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG
HDMSG PROC NEAR
ASSUME DS:CSEG ;DATA SEGMENT
JMP BY_ID ;JMP AROUND ID
ID HDMSG
INCLUDE \SCRMGR\SCRNWORK.ASM
;
PWORK DB 80 DUP(' ') ;PRINT AREA
; **********************************************************************
; * ERROR MESSAGES *
; **********************************************************************
ERR_MSGS LABEL BYTE
DB 'UNKOWN ERROR ' ;ERROR CODE 00
DB 'COMMAND ABORTED BY CTLR ' ;ERROR CODE 01
DB 'ADDRESS MARK NOT FOUND ' ;ERROR CODE 02
DB 'ID NOT FOUND ' ;ERROR CODE 03
DB 'RESET FAILED ' ;ERROR CODE 04
DB 'DRIVE INITIALIZATION ERR ' ;ERROR CODE 05
DB 'TRANSFER OVER 64K BOUNDRY' ;ERROR CODE 06
DB 'BAD SECTOR FLAG DETECTED ' ;ERROR CODE 07
DB 'UNCORRECTABLE DATA ERROR ' ;ERROR CODE 08
DB 'CORRECTABLE DATA ERROR ' ;ERROR CODE 09
DB 'CONTROLLER ERROR ' ;ERROR CODE 10
DB 'SEEK ERROR ' ;ERROR CODE 11
DB 'DRIVE TIMED OUT ' ;ERROR CODE 12
DB 'DRIVE NOT READY ' ;ERROR CODE 13
DB 'UNDEFINED ERROR ' ;ERROR CODE 14
DB 'UNKOWN ERROR ' ;ERROR CODE 15
DB 'WRITE FAULT ' ;ERROR CODE 16
DB 'SENSE ERROR ' ;ERROR CODE 17
DB 'SECTOR BUFFER ERROR ' ;ERROR CODE 18
DB 'ECC DEVICE ERROR ' ;ERROR CODE 19
DB 'CONTROL PROCESS ERROR ' ;ERROR CODE 20
DB 'DRIVE NOT CONFIGURED ' ;ERROR CODE 21
DB 'INVALID DRIVE SPECIFIED ' ;ERROR CODE 22
DB 'INVALID INTERLEAVE ' ;ERROR CODE 23
DB 'FORMAT FAILED ' ;ERROR CODE 24
DB 'FORMAT COMPLETE ' ;ERROR CODE 25
DB 'SURFACE ANALYSIS FAILED ' ;ERROR CODE 26
DB 'SURFACE ANALYSIS COMPLETE' ;ERROR CODE 27
DB 'SECTOR HAS BEEN FLAGGED ' ;ERROR CODE 28
DB 'HEAD SELECT PASSED ' ;ERROR CODE 29
DB 'HEAD SELECT FAILED ' ;ERROR CODE 30
DB 'READ/WRITE PASSED ' ;ERROR CODE 31
DB 'READ/WRITE FAILED ' ;ERROR CODE 32
DB 'SEEK TEST PASSED ' ;ERROR CODE 33
DB 'SEEK TEST FAILED ' ;ERROR CODE 34
DB 'ECC TEST PASSED ' ;ERROR CODE 35
DB 'ECC TEST FAILED ' ;ERROR CODE 36
DB 'DISK READY FOR RELOCATION' ;ERROR CODE 37
DB '** RELOCATION FAILED ** ' ;ERROR CODE 38
DB 'CYLINDER OUT OF RANGE ' ;ERROR CODE 39
DB 'HEAD OUT OF RANGE ' ;ERROR CODE 40
DB 'SECTOR OUT OF RANGE ' ;ERROR CODE 41
DB 'DEFECT SCAN FAILED ' ;ERROR CODE 42
DB 'DEFECT SCAN COMPLETE ' ;ERROR CODE 43
DB 'SHUT THE SYSTEM POWER OFF' ;ERROR CODE 44
; **********************************************************************
; * EQUATES AND STRUCTURES *
; **********************************************************************
INCLUDE HDEQU.ASM
; **********************************************************************
; * SCREENS *
; **********************************************************************
;
SFIELD E01,E01,25,@LABEL,LO,16,02
;
SFIELD E03,E04,,@LABEL,LO,16,02,' CYL XXXX HEAD XX SECTOR XX - '
SFIELD E04,E05,25,@LABEL,LO,16,33
SFIELD E05,E06,04,@LABEL,LO,16,08
SFIELD E06,E07,02,@LABEL,LO,16,18
SFIELD E07,E03,02,@LABEL,LO,16,28
;
BY_ID:
HDMSG ENDP
; *********************************************************************
; * *
; * LOG THE ERROR TO HARDCOPY *
; * *
; *********************************************************************
LOGERR PROC
PUSHALL
CMP P_STAT,0FFH ;PRINT ON??
JNE LOG_00 ;YES
JMP LOG_EXIT ;EXIT
LOG_00:
LEA DI,PWORK ;OUTPUT
PUSH DS ;ESTABLISH
POP ES ; SEGMENT
MOV CX,80 ;LENGTH
CLD ;FORWARD DIRECTION
MOV AL,' ' ;PAD CHARACTER
REP STOSB ;CLEAR PWORK
MOV DX,BX ;SAVE FIRST ENTRY
LOG_10:
LEA SI,[BX].S_DATA ;INPUT
LEA DI,PWORK ;OUTPUT
XOR CX,CX ;CLEAR CX
MOV CL,[BX].S_COL ;FETCH COLUMN
ADD DI,CX ; OFFSET
MOV CL,[BX].S_LEN ;FETCH LENGTH
REP MOVSB ;MOVE IT
MOV BX,[BX].S_NEXT ;NEXT ENTRY
CMP BX,DX ;ALL DONE??
JNE LOG_10 ;NO - PROCESS THIS ONE
MOV CX,80 ;LENGTH
LEA SI,PWORK ;INPUT
LOG_20:
LODSB ;FETCH A BYTE
MOV DL,AL ;OUTPUT
MOV AH,05H ;PRINT
INT 21H ; THE BYTEG
LOOP LOG_20 ;NEXT BYTE
MOV DL,0DH ;PRINT
MOV AH,05H ; ANT
INT 21H ; CARRIAGE
MOV DL,0AH ; RETURN
MOV AH,05H ; AND
INT 21H ; LINE FEED
LOG_EXIT:
POPALL
RET ;RETURN
LOGERR ENDP
; *********************************************************************
; * *
; * DISPLAY ERROR MSG *
; * AL = ERROR CODE *
; * *
; *********************************************************************
D_ERROR PROC
PUSHALL
SCROLL LO,4,2,16,78 ;SCROLL
XOR AH,AH ;CLEAR AH
LEA SI,ERR_MSGS ;ERROR MSGS
XOR DX,DX ;CLEAR DX
MOV CX,25 ;ENTRY SIZE
MUL CX ;INDEX
ADD SI,AX ; INTO TABLE
LEA BX,E04 ;OUTPUT
LEA DI,[BX].S_DATA ; MESSAGE
PUSH DS ;ESTABLISH
POP ES ; SEGMENT
CLD ;FORWARD DIRECTION
REP MOVSB ;MOVE ERROR MESSAGE
MOV AX,CUR_CYL ;FORMAT
LEA BX,E05 ; CYLINDER
CALL CONV_ASCII
XOR AX,AX ;CLEAR AX
MOV AL,CUR_HD ;FORMAT
LEA BX,E06 ; HEAD
CALL CONV_ASCII
MOV AL,CUR_SEC ;FORMAT
LEA BX,E07 ; SECTOR
CALL CONV_ASCII
WRITE E03 ;DISPLAY THE MESSAGE
CALL LOGERR ;PRINT THE MESSAGE
POPALL
RET